using System;
using System.Data;
using System.Windows.Forms;
using Company.BLL;
using Company.BLL.DuLieuChuan;
using Janus.Windows.GridEX;
using Company.BLL.KDT.GC;
using Company.BLL.KDT;

namespace Company.Interface.KDT.GC
{
    public partial class HopDongManageForm : BaseForm
    {
        public HopDong HopDongSelected = new HopDong();
        private HopDongCollection collection = new HopDongCollection();        
        public bool IsBrowseForm = false;
        public HopDongManageForm()
        {
            InitializeComponent();
            dgList.RootTable.Columns[7].Visible = false;
            cbStatus.SelectedIndex = 0;
        }

        public void BindData()
        {
            string where = string.Format("MaDoanhNghiep = '{0}' and MaHaiQuan='{1}' and TrangThaiXuLy={2}", GlobalSettings.MA_DON_VI, ctrDonViHaiQuan.Ma,cbStatus.SelectedValue.ToString());
            collection = Company.BLL.KDT.GC.HopDong.SelectCollectionDynamic(where, "");
            dgList.DataSource = collection;
            dgList.RootTable.Columns[7].Visible = false;            
        }

        //-----------------------------------------------------------------------------------------
        
        private void khoitao_DuLieuChuan()
        {
            // Đơn vị tính.
            this._DonViTinh = DonViTinh.SelectAll();

            // Đơn vị Hải quan.
            if (this.HopDongSelected.MaHaiQuan.Trim().Length == 0)
                ctrDonViHaiQuan.Ma = GlobalSettings.MA_HAI_QUAN;
            else
                ctrDonViHaiQuan.Ma = this.HopDongSelected.MaHaiQuan;
        }

        //-----------------------------------------------------------------------------------------
        
        private void HopDongManageForm_Load(object sender, EventArgs e)
        {
            this.khoitao_DuLieuChuan();

            //lblHint.Visible = this.IsBrowseForm;
            ctrDonViHaiQuan.Enabled = !this.IsBrowseForm;
        }

        //-----------------------------------------------------------------------------------------
        
        private void btnGetListFromHQ_Click(object sender, EventArgs e)
        {
            //this.dsRegistedList = new HopDong().WS_GetDanhSachDaDangKy(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //dgList.DataSource = this.dsRegistedList.Tables[0];
            //// Cập nhật vào CSDL.
            //bool ret = new HopDong().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI, this.dsRegistedList);
            //bool retNPL = new NguyenPhuLieu().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //bool retSP = new SanPham().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //bool retPK = new PhuKien().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            
            //if (ret && retNPL & retSP & retPK)
            //{
            //    MessageBox.Show("Cập nhật thành công");
            //}
        }

        //-----------------------------------------------------------------------------------------
        
        private void dgList_RowDoubleClick(object sender, RowActionEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                long ID = (long)Convert.ToInt32(e.Row.Cells[4].Text);
                Form[] forms = this.ParentForm.MdiChildren;
                for (int i = 0; i < forms.Length; i++)
                {
                    if (forms[i].Name.ToString().Equals(ID.ToString()))
                    {
                        forms[i].Activate();
                        return;
                    }
                }
                HopDongEditForm hopdong = new HopDongEditForm();
                hopdong.MdiParent = this.ParentForm;
                hopdong.Name = ID.ToString();
                hopdong.hopdong.ID = ID;
                hopdong.Show();
            }
            
        }

        private void ctrDonViHaiQuan_ValueChanged(object sender, EventArgs e)
        {
            this.BindData();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {               
                if (e.Row.Cells[6].Text == TrangThaiXuLy.CHO_DUYET.ToString())
                    e.Row.Cells[6].Text = "Chờ duyệt";
                else if (e.Row.Cells[6].Text == TrangThaiXuLy.CHUA_KHAI_BAO.ToString())
                    e.Row.Cells[6].Text = "Chưa gửi";
                else if (e.Row.Cells[6].Text == TrangThaiXuLy.DA_DUYET.ToString())
                    e.Row.Cells[6].Text = "Đã duyệt";
                if (dgList.RootTable.Columns[7].Visible == true)
                {
                    if (e.Row.Cells[7].Value.ToString() == "1")
                    {
                        e.Row.Cells[7].Text = "Đã duyệt";
                    }
                    else
                        e.Row.Cells[7].Text = "Chưa duyệt";
                }
            }
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            dgList.RootTable.Columns[7].Visible = false;
            string where = "MaDoanhNghiep = '" + GlobalSettings.MA_DON_VI + "' and MaHaiQuan='" + ctrDonViHaiQuan.Ma + "'";
            if (txtSoTiepNhan.Text.Trim().Length > 0)
            {
                where += " and sotiepnhan=" + txtSoTiepNhan.Text.Trim();
            }
            if (txtSoHopDong.Text.Trim().Length > 0)
            {
                where += " and sohopdong='" + txtSoHopDong.Text.Trim() + "'";                
            }
            if (ccNgayKyHD.Text.Length > 0)
            {
                where += " and NgayKy='" + ccNgayKyHD.Value.Month.ToString() + "/" + ccNgayKyHD.Value.Day.ToString() + "/" + ccNgayKyHD.Value.Year + "'";                            
            }
            if (txtNamTiepNhan.Text.Trim().Length > 0)
            {
                where += " and year(ngaytiepnhan)=" + txtNamTiepNhan.Text.Trim();
            }
            if(cbStatus.Text.Length>0)
                where += " and TrangThaiXuLy="+cbStatus.SelectedValue.ToString();

             collection = Company.BLL.KDT.GC.HopDong.SelectCollectionDynamic(where, "");
             dgList.DataSource = collection;
        }

        private void dgList_DeletingRecord(object sender, RowActionCancelEventArgs e)
        {
            long ID = (long)Convert.ToInt32(e.Row.Cells[4].Text);
            Company.BLL.KDT.GC.HopDong hd = Company.BLL.KDT.GC.HopDong.Load(ID);
            if (hd != null)
            {
                if (hd.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
                {
                    ShowMessage("Hợp đồng đã duyệt chính thức. Không được chỉnh sửa", false);
                    e.Cancel = true;
                    return;
                }
                if (e.Row.RowType == RowType.Record)
                {
                    if (ShowMessage("Bạn có muốn xóa hợp đồng này không?", true) == "Yes")
                    {
                        hd.Delete();
                    }
                    else
                    {
                        e.Cancel = true;
                    }
                }
            }
            else
                e.Cancel = true;
        }

        private void cmMain_CommandClick(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "KhaiBao": khaibaoHD(); break;
                case "NhanDuLieu": nhandulieuHD(); break;
                case "Huy": HuyNhieuHD(); break;
            }
          
        }
        private void nhandulieuHD()
        {
            if (collection.Count == 0)
            {
                ShowMessage("Chưa có hợp đồng.", false);
                return;
            }            
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            try
            {
                this.Cursor = Cursors.WaitCursor;
                HopDong.WSReQuestListHopDong(collection);
                dgList.RootTable.Columns[7].Visible = true;
                dgList.Refetch();
                this.Cursor = Cursors.Default;                
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage("Có lỗi " + ex.Message, false);
            }            
        }
        private void uiCommandBar1_CommandClick(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
        {

        }

        private void khaibaoHD()
        {
            if (collection.Count == 0)
            {
                ShowMessage("Chưa có hợp đồng.", false);
                return;
            }
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            try
            {
                this.Cursor = Cursors.WaitCursor;
                HopDong.WSSend(collection);
                btnSearch_Click(null, null);
                this.Cursor = Cursors.Default;
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                if (ShowMessage("Có lỗi khi thực hiện. Bạn có muốn đưa vào hàng đợi không"+ex.Message, true) == "Yes")
                {
                    foreach (HopDong hopdong in collection)
                    {
                        HangDoi hd = new HangDoi();
                        hd.ID = hopdong.ID;
                        hd.LoaiToKhai = LoaiToKhai.HOP_DONG;
                        hd.TrangThai = hopdong.TrangThaiXuLy;
                        hd.ChucNang = ChucNang.KHAI_BAO;
                        MainForm.AddToQueueForm(hd);
                    }
                    MainForm.ShowQueueForm();
                }
            }       
        }
        private void HuyNhieuHD()
        {
            if (collection.Count == 0)
            {
                ShowMessage("Chưa có hợp đồng.", false);
                return;
            }
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            try
            {
                this.Cursor = Cursors.WaitCursor;
                HopDong.WSCancelS(collection);
                btnSearch_Click(null, null); 
                this.Cursor = Cursors.Default;
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                if (ShowMessage("Có lỗi khi thực hiện. Bạn có muốn đưa vào hàng đợi không", true) == "Yes")
                {
                    foreach (HopDong hopdong in collection)
                    {
                        HangDoi hd = new HangDoi();
                        hd.ID = hopdong.ID;
                        hd.LoaiToKhai = LoaiToKhai.HOP_DONG;
                        hd.TrangThai = hopdong.TrangThaiXuLy;
                        hd.ChucNang = ChucNang.KHAI_BAO;
                        MainForm.AddToQueueForm(hd);
                    }
                    MainForm.ShowQueueForm();
                }
            }
        }
        private void khaibaoCTMenu_Click(object sender, EventArgs e)
        {

            try
            {
                if (dgList.GetRow() != null)
                {
                    HopDongSelected = (HopDong)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        HopDongSelected.WSSend();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                        HuyCTMenu.Enabled = true;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã gửi thành công. Số tiếp nhận của bạn là " + HopDongSelected.SoTiepNhan.ToString(), false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Hợp đồng này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Khai báo không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = HopDongSelected.ID;
                    hd.LoaiToKhai = LoaiToKhai.HOP_DONG;
                    hd.TrangThai = HopDongSelected.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void cbStatus_SelectedIndexChanged(object sender, EventArgs e)
        {
            dgList.RootTable.Columns[7].Visible = false;
            if (cbStatus.SelectedValue.ToString() == "-1")
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                HuyCTMenu.Enabled = false;
                NhanDuLieuCTMenu.Enabled = false;
                khaibaoCTMenu.Enabled = true;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
            }
            else if (cbStatus.SelectedValue.ToString() == "0")
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                HuyCTMenu.Enabled = true;
                NhanDuLieuCTMenu.Enabled = true;
                khaibaoCTMenu.Enabled = true;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
            }
            else
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                HuyCTMenu.Enabled = false;
                NhanDuLieuCTMenu.Enabled = false;
                khaibaoCTMenu.Enabled = false;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
            }
        }

        private void NhanDuLieuCTMenu_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    HopDongSelected = (HopDong)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        HopDongSelected.WSRequest();                                                
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã nhận dữ liệu thành công.", false);
                        btnSearch_Click(null, null);                 
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Hợp đồng này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Nhận dữ liệu hợp đồng không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = HopDongSelected.ID;
                    hd.LoaiToKhai = LoaiToKhai.HOP_DONG;
                    hd.TrangThai = HopDongSelected.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.NHAN_THONG_TIN;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void HuyCTMenu_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    HopDongSelected = (HopDong)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        HopDongSelected.WSCancel();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã hủy thành công.", false);
                        btnSearch_Click(null, null);                 
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Hợp đồng này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Hủy hợp đồng không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = HopDongSelected.ID;
                    hd.LoaiToKhai = LoaiToKhai.HOP_DONG;
                    hd.TrangThai = HopDongSelected.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.HUY_KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }
        
        //-----------------------------------------------------------------------------------------
    }
}